package com.itheima.A01mapDemo;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class A05mapDemo {
    public static void main(String[] args) {
        //需求：创建一个HashMap集合，键是学生对象（Student），值是籍贯（String）。
        //存储三个键值对元素，并遍历
        //要求：同姓名，同年龄认为是同一个学生

        //核心：若键存的是自定义对象，需要重写hashCode和equals力法

        //1.创建HashMap集合对象
        HashMap<Student,String> hm = new HashMap<>();

        //2.创建学生对象
        Student s1 = new Student("张三",18);
        Student s2 = new Student("李四",19);
        Student s3 = new Student("王五",20);
        Student s4 = new Student("王五",20);

        //3.添加元素到集合
        hm.put(s1,"北京");
        hm.put(s2,"上海");
        hm.put(s3,"广州");
        hm.put(s4,"深圳");

        //4.遍历集合
        Set<Student> keys = hm.keySet();
        for (Student key : keys) {
            String value = hm.get(key);
            System.out.println(key.getName()+"-->"+value);
        }

        //5.键值对遍历
        Set<Map.Entry<Student, String>> entries = hm.entrySet();
        for (Map.Entry<Student, String> entry : entries) {
            Student key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key.getName()+"-->"+value);
        }

        //6.lambda表达式
        hm.forEach(( student,  s)-> System.out.println(student.getName()+"-->"+s));

    }
}